package com.yi.controller;

import com.yi.model.Baike;
import com.yi.service.MongoDbBaiKeService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;

import java.util.List;

/**
 * MongoDB操作
 * @author YI
 * @date 2018-3-19 18:11:30
 */
@Controller
@RequestMapping("/mongodb")
public class MongoDbController {
    @Autowired
    private MongoDbBaiKeService mongoDbBaiKeService;

    /**
     * 根据名称查询文档
     * @param id 文档主键
     * @return
     */
    @RequestMapping("/baike")
    @ResponseBody
    public Baike findUser(String id) {
        return mongoDbBaiKeService.findById(id);
    }

    /**
     * 添加百科文档
     * @param baike
     * @return
     */
    @RequestMapping("/addbaike")
    @ResponseBody
    public Baike addDict(Baike baike) {
        return mongoDbBaiKeService.addDict(baike);
    }

    /**
     * 查询comment的bad属性大于等于一定数量的Baike对象
     * @param bad
     * @return
     */
    @RequestMapping("/querybad")
    @ResponseBody
    public List<Baike> queryBad(int bad) {
        List<Baike> baikes = mongoDbBaiKeService.queryBad(bad);
        return baikes;
    }

    /**
     * 点赞,这个标签名的点个赞
     * @param tag   标签名称
     * @return
     */
    @RequestMapping("/baike/tag")
    @ResponseBody
    public String addOne(String tag) {
        return mongoDbBaiKeService.addOne(tag);
    }

    /**
     * 检索置顶标签，分页显示
     * @param tag       标签名称
     * @param pageNum
     * @return
     */
    @RequestMapping("/baike/tagPageNum")
    @ResponseBody
    public List<Baike> findBaike(String tag, int pageNum) {
        return mongoDbBaiKeService.findBaike(tag, pageNum);
    }

    /**
     *  查询点赞数小于good，负面评价大于bad的所有Baike
     * @param tag   标签名称
     * @param good  ＜(＾－＾)＞ 你最棒 点赞数
     * @param bad   (｡•ˇ‸ˇ•｡)滚犊子    负面数
     * @return
     */
    @RequestMapping("/baike/tagRange")
    @ResponseBody
    public List<Baike> findBaike(String tag, int good, int bad) {
        return mongoDbBaiKeService.findBaike(tag, good, bad);
    }

    /**
     * 更新文档
     * @param baike
     * @return
     */
    @RequestMapping("/updatebaike")
    @ResponseBody
    public Baike updateDict(Baike baike) {
        return mongoDbBaiKeService.updateDict(baike);
    }

    /**
     * 通过id删除文档
     * @param id
     * @return
     */
    @RequestMapping("/deletebaike")
    @ResponseBody
    public Baike deleteDict(String id) {
        return mongoDbBaiKeService.deleteDict(id);
    }
}
